package com.summer.bilibili.aop.login;

import org.springframework.security.core.AuthenticationException;

import java.lang.annotation.*;

/**
 * @classname LoginLimit
 * @description 登录失败次数限制和账户锁定机制
 * @date 2025/8/31 21:27
 * @author: summer
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented // 将注解信息包含在javadoc中
public @interface LoginLimit {

    /**
     * spring el 表达式，用于key
     */
    String value ();

    /**
     * 最大尝试次数
     */
    int maxTryTimes () default 5;

    /**
     * 锁定时间 , 单位 ： 秒
     */
    int lockTime () default 60;

    /**
     * 捕获的异常单位，该异常及其子类才算做登录失败
     */
    Class < ? extends Exception >[] exception () default { AuthenticationException.class };
    // 身份认证失败异常的基类
}
